package rawwrs.action;

import java.util.List;
import java.util.Map;

import javax.persistence.EntityManager;




import rawwrs.bean.UsuarioDTO;
import rawwrs.dao.jpa.UbigeoJPADAO;
import rawwrs.dao.jpa.UsuarioJPADAO;
import rawwrs.util.JPAUtilSingleton;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class UsuarioAction extends ActionSupport {
	
	private static final long serialVersionUID = 1L;
    private UsuarioDTO usuario;


	private List<UsuarioDTO> usuarios;
    UsuarioJPADAO ujd = new UsuarioJPADAO();
    private String email="";
    private String mensaje="";

	

	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	Map<String, Object>	s_user =	ActionContext.getContext().getSession();
    
    
	public String execute() throws Exception {
		System.out.println("Metodo execute()......");
		EntityManager em = JPAUtilSingleton.
			getInstance().getEmf().createEntityManager();
		em.getTransaction().begin();
		
		em.getTransaction().commit();
		em.close();// Libera recursos
		return super.execute();
	}
	
	 public String logueo() throws Exception{
		 if(ujd.LogeoUsuario(usuario)!=null){
			 mensaje="SUCCESS";
			 s_user.put("s_user_actual", ujd.LogeoUsuario(usuario));
			 return SUCCESS;
		 }
		 mensaje="ERROR";
		 s_user.put("s_user_actual", null);
		 return ERROR;
	 }
	 
	 public String logout() throws Exception{		 
		 s_user.remove("s_user_actual");
		 return SUCCESS;
	 }
	 
	
  public String successEmail() throws Exception{
		 if(ujd.SuccessEmail(email)!=null){				 
		
			 return ERROR;
		 }else{	
			
			 return SUCCESS; 
		 }		
	 }	 
	 
	 
    public String obtenerTodosUsuarios() throws Exception{
    	 usuarios = ujd.obtenerTodos();
    	 return SUCCESS;
    }

	public String inicializarInsertarOActualizar() throws Exception{
	    if (usuario != null && usuario.getEmail()!= null) {
			usuario = ujd.obtenerUsuario(usuario);
		}
	    return SUCCESS;
	}
	
    public String insertar() throws Exception{
        	ujd.insertar(usuario);       
       return SUCCESS;
    }
    public String actualizar() throws Exception{
    	UsuarioDTO us = (UsuarioDTO)s_user.get("s_user_actual");
    	usuario.setId(us.getId());    	
        ujd.actualizar(usuario);
        
        s_user.remove("s_user_actual");
        s_user.put("s_user_actual", usuario);
        
        mensaje="SUCCESS";        
       return SUCCESS;
    }
    
    public String eliminarUsuario() throws Exception{
    	ujd.eliminar(usuario);
		return SUCCESS;
	}
    
    public String detalleUsuario() throws Exception{
    	UsuarioDTO user = (UsuarioDTO)s_user.get("s_user_actual");
    	
    	
    	usuario = ujd.obtenerUsuario(user);
		return SUCCESS;
	}

	public UsuarioDTO getUsuario() {
		return usuario;
	}

	public void setUsuario(UsuarioDTO usuario) {
		this.usuario = usuario;
	}

	public List<UsuarioDTO> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List<UsuarioDTO> usuarios) {
		this.usuarios = usuarios;
	}

    public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}


}
